//这段代码定义了一个名为 CacheType 的枚举，其中包含两个成员：Local 和 Session
enum CacheType {
  Local,
  Session
}
class Cache {
  //Storage 是一个接口或类型，通常代表 Web 存储对象，比如 localStorage 或 sessionStorage。
  storage: Storage
  //constructor(type: CacheType)：这是 Cache 类的构造函数，
  //当创建 Cache 类的实例时会自动调用。它接收一个参数 type，其类型为 CacheType 枚举。
  constructor(type: CacheType) {
    // 根据传入的类型决定使用 localStorage 还是 sessionStorage
    this.storage = type === CacheType.Local ? localStorage : sessionStorage
  }
  setCache(key: string, value: any) {
    // 将 value 转换为 JSON 字符串，并存储在 storage 中
    this.storage.setItem(key, JSON.stringify(value))
  }
  getCache(key: string) {
    const value = this.storage.getItem(key)
    if (value) {
      return JSON.parse(value)
    }
  }
  removeCache(key: string) {
    this.storage.removeItem(key)
  }
  clear() {
    this.storage.clear()
  }
}
const localCache = new Cache(CacheType.Local)
const sessionCache = new Cache(CacheType.Session)
export { localCache, sessionCache }
